#include <GL/glut.h>
#include <stdlib.h>

void cambiaProy(unsigned char key, int x, int y);
void dibuja(void);

int main(int argc, char** argv)
{
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
    glutInitWindowSize(640,640);
    glutInitWindowPosition(100, 150);
    glutCreateWindow("Proyecciones");
    
    glutDisplayFunc(dibuja);
    glutKeyboardFunc(cambiaProy);
    glutMainLoop();
    
    return 0;
}

void cambiaProy(unsigned char key, int x, int y)
{
    glMatrixMode(GL_PROJECTION);
    glLoadIdentity();
    switch(key) {
      case 27: 
      	exit(0);
      break;
      
      case 'p':
      case 'P':
      	gluPerspective(45, 1, 1, 1000);
      break;
      
      case 'o':
      case 'O':
      	glOrtho(-1.0, 1.0, -1.0, 1.0, 1.0,1000.0);
      break;
      
      default:break;
    }
    
    glMatrixMode(GL_MODELVIEW);
    glLoadIdentity();
    glutPostRedisplay();
}

void dibuja(void)
{
    glClearColor(1.0,1.0,1.0,0.0);
    glClear(GL_COLOR_BUFFER_BIT);
    glColor3f(0.7, 0.0, 1.0);
    glLineWidth(3);
    glTranslatef(0.0, 0.0, -2.5);
    glRotatef(30.0, 1.0, 0.0, 0.0);
    glRotatef(70.0, 0.0, 1.0, 0.0);
    glScalef(3,1.,1.);
    glutWireCube(.5);
    glFlush();
}
